package com.erp.utils;

/**
 * @ClassName dd
 * @Description TODO
 * @Author songjizhen
 * @Date 2020/6/21 11:31
 * @Version 1.0
 */
/**
 * 请求状态枚举
 *
 * 后续状态若太多，可以考虑使用继承等方式拓展。
 */
/**
 * 请求状态枚举
 *
 * 后续状态若太多，可以考虑使用继承等方式拓展。
 */
public enum ResultStatusEnum {

    /**
     * 广义通用
     */
    SUCCESS(200, "请求成功"),
    ERROR(-1, "请求服务异常"),
    NOT_FOUND(-404, "没有找到"),
    NOT_EMPTY(-200, "字段不能为空"),
    DUPLICATE_EXCEPTION(-3, "重复异常"),
    CODEC_ERROR(-110,"公钥获取失败"),
    SYSTEM_ERROR(10010, "系统异常，请稍后再试！"),
    DATA_ERROR(10011, "数据异常，请稍后再试！"),
    PARAMETER_ERROR(10011, "参数异常！"),

    /**
     * 仓库管理-备货入库-入库数量不能超过参考数量
     */
    IN_STOCK_QUANTITY_CHECK_ERROR(11000, "入库数量不能超过参考数量"),

    /**
     * 仓库管理-其它出库-出库数量不能超过库存实际数量
     */
    OUT_STOCK_QUANTITY_CHECK_ERROR(11001, "出库数量不能超过库存实际数量"),

    /**
     * 仓库管理-调拨-调拨数量不能大于允许调拨数量
     */
    TRANSFER_QUANTITY_CHECK_ERROR(11002, "调拨数量不能大于允许调拨数量"),

    /**
     * 仓库管理-调拨-合同,仓库信息没有变化,不能调拨
     */
    TRANSFER_INFO_CHECK_ERROR(11003, "合同、仓库信息没有变化,不能调拨"),

    /**
     * 仓库管理-调拨-该单据无法作废
     */
    TRANSFER_INVOICE_INVALID_ERROR(11004, "该单据无法作废"),

    /**
     * 单号重复
     */
    BILL_NO_REPEAT(11005, "单号已存在"),

    /**
     * 其它出库-删除失败
     */
    OTHER_OUT_STOCK_DELETE_ERROR(11006, "可申请数量小于出库数量,不能删除"),

    /**
     * 资金管理-收款-合同认领总额不能大于合同总额
     */
    RECEIVE_PAYMENT_AMOUNT_ERROR(11007, "合同认领总额不能大于合同总额"),

    /**
     * 审批退回校验：如果该产品被下游调用，则对应上游单据信息不能被退回
     */
    APPROVAL_RETURNED_FAILED(11008, "审批退回失败,存在已被调用的产品"),

    /**
     * 收款退回校验：该单据已关联合同或者结汇发票，不能退回
     */
    RECEIVE_PAYMENT_ERROR_RETURN_BOX(11009, "该单据已关联合同或者结汇发票，不能退回"),

    /**
     * 资金管理-收款-待认领金额不能小于零
     */
    RECEIVE_PAYMENT_AMOUNT_ERROR_MSG(11010, "待认领金额不能小于零"),

    /**
     * 出口业务-外销-合同总额不能超过剩余信用额度
     */
    CHECK_CREDIT_QUOTA_ERROR(11011, "合同总额不能超过剩余信用额度"),

    /**
     * 出口业务-一键操作-权限不足
     */
    INSUFFICIENT_PERMISSION_ERROR(11012, "权限不足"),

    /**
     * 出口业务-出运明细-已做报关，无法退回或修改
     */
    SHIPMENT_BILL_DECLARE_USED(11013, "已做报关，无法退回或修改"),

    /**
     * 出口业务-出运明细-已做结汇，无法退回或修改
     */
    SHIPMENT_BILL_EXCHANGE_USED(11014, "已做结汇，无法退回或修改"),

    /**
     * 出口业务-出运明细-已做付款，无法退回或修改
     */
    SHIPMENT_PAYMENT_USED(11015, "已做付款，无法退回或修改"),

    /**
     * 出口业务-外销-转移单据所选业务员为空
     */
    EXPORT_UPDATE_SALESMAN_IS_NULL(11016, "业务员为空，请重新选择业务员"),

    /**
     * 字典编码重复
     */
    DICTIONARY_CODE_REPEAT(11017, "编码重复"),

    /**
     * 出口业务-外销-外销退回失败，已做调拨
     */
    EXPORT_RETURNED_TRANSFER_FAILED(11018, "退回失败，已做调拨"),

    /**
     * 资金管理-收款-收汇金额不一致
     */
    RECEIVE_PAYMENT_COLLECTION_AMOUNT_ERROR(11019, "收汇金额不一致"),

    /**
     * 已做计划
     */
    PLAN_USED(11020, "已做计划"),

    /**
     * 已做收款
     */
    COLLECTION_USED(11021, "已做收款"),

    /**
     * 已关联库存
     */
    STOCK_USED(11022, "已关联库存"),

    /**
     * 已做付款
     */
    PAYMENT_USED(11023, "已做付款"),

    /**
     * 规格编码重复
     */
    SPECIFICATION_CODE_ITERATE(11024, "规格编码重复"),

    /**
     * 字典名称重复
     */
    DICTIONARY_NAME_REPEAT(11025, "名称重复"),

    /**
     * 字典中文描述重复
     */
    DICTIONARY_CHINESE_DESCRIPTION_REPEAT(11026, "中文描述重复"),

    /**
     * 字典英文描述重复
     */
    DICTIONARY_ENGLISH_DESCRIPTION_REPEAT(11027, "英文描述重复"),

    /**
     * 登记数量不能超过剩余数量
     */
    RESOURCE_SAMPLE_REGISTRATION_AMOUNT_ERROR(11028, "登记数量不能超过剩余数量"),

    /**
     * 领出数量不能超过剩余数量
     */
    TACK_SAMPLE_REGISTRATION_AMOUNT_ERROR(11029, "领出数量不能超过剩余数量"),

    /**
     * 规约：时间异常类 value定义区间为 -100 ~ -199
     */
    TIME_EMPTY(-100, "时间不能为空"),
    TIME_MORE_THAN_14_DAYS(-101, "时间跨度不能超过两个星期"),

    /**
     * 规约：字段为空 value区间 -200 ~ -299
     */
    OPENID_EMPTY(-201, "openid不能为空"),
    TOKEN_ERROR(-15,"token非法"),
    TOKEN_OVERDUE(-103,"token过期"),
    TOKEN_FAILURE(-115,"token失效"),
    USER_PWD_ERROR(-165,"帐号或密码错误"),
    UPLOAD_FILE_ERROR(-60,"文件上传失败"),

    /**
     * 规约：查询结果为空 value区间 -300 ~ -399
     */
    SELECT_LIST_ISNULL_ERROR(-300,"暂无数据"),
    SELECT_NUM_NOT_ZERO(-301,"其中产品已在库存中存在！不能停用");


    private int value;

    private String msg;

    ResultStatusEnum(int value, String msg) {
        this.value = value;
        this.msg = msg;
    }

    public int getValue() {
        return value;
    }

    public String getMsg() {
        return msg;
    }
}

